//泛型  

//泛型在函数内使用  定义函数时，不指定类型，在调用时指定类型

function getData<T>(info:T):T{
    return info
}

getData<string>('hello');

getData<number>(1);

//获取数组的最小值

// function getMin<U>(arr:U[]):U{
//     let min = arr[0]; //第一项为最小值
//     for(let i = 0;i<arr.length;i++){
//         if(min > arr[i]){
//             min = arr[i]
//         }
//     }
//     return min
// }

// //['a','b','c']  [1,2,3]

// getMin<string>(['a','b','c'])

// console.log(getMin<number>([1,2,3]))

//泛型在类内的使用

class GetMin<T>{
    list:T[];
    constructor(arr:T[]){
        this.list = arr
    }

    min():T{
        let min = this.list[0]; //第一项为最小值
        for(let i = 0;i<this.list.length;i++){
            if(min > this.list[i]){
                min = this.list[i]
            }
        }
        return min
    }
}

let getMin1 = new GetMin<number>([1,2,3])
console.log(getMin1.min())




